// 测试 Number 的 类属性(含值属性和函数属性)

console.log('类属性(值属性)');
console.log( Number.NaN ); // not a number
console.log( Number.NEGATIVE_INFINITY ); // 负无穷大
console.log( Number.POSITIVE_INFINITY ); // 负无穷大
console.log( Number.MAX_VALUE ); // 最大值
console.log( Number.MIN_VALUE ); // 最小值
console.log( Number.MAX_SAFE_INTEGER ); // 最大安全整数值
console.log( Number.MIN_SAFE_INTEGER ); // 最大安全整数值
console.log( Number.EPSILON ); 

console.log('类方法(函数属性)');
// 判断参数是否是有穷大数字
console.log( Number.isFinite( Number.MAX_SAFE_INTEGER ) ); // true
console.log( Number.isFinite( Number.NEGATIVE_INFINITY ) ); // false

// 判断参数是否是整数
console.log( Number.isInteger( 3.14 ) ); // false
console.log( Number.isInteger( Number.MIN_SAFE_INTEGER ) ); // true

// 判断参数是否是安全整数
console.log( Number.isSafeInteger( Number.MIN_SAFE_INTEGER - 1 ) ); // false
console.log( Number.isSafeInteger( Number.MAX_SAFE_INTEGER + 1 ) ); // false
// 对于超出 [ Number.MIN_SAVE_INTEGER, Number.MAX_SAFE_INTEGER ] 范围的整数应该使用 bigint 来表示
let bigInteger = BigInt(Number.MAX_SAFE_INTEGER) ** 2n;
console.log( bigInteger , typeof bigInteger );

// 判断参数是否不是数字
console.log( Number.isNaN() ); // false
// 关于 undefined 的判断，Number.isNaN 与 globalThis.isNaN 是不同的
console.log( Number.isNaN(undefined) ); // false
console.log( Number.isNaN(null) ); // false
console.log( Number.isNaN(NaN)); // true
console.log( Number.isNaN(Number.NEGATIVE_INFINITY)); // false

console.log( Number.parseInt('0x12345') );
console.log( Number.parseInt('12345', 8 ) );
console.log( Number.parseInt('12345', 16 ) );
console.log( Number.parseInt('12345', 36 ) );

console.log( Number.parseFloat('1234.5678') );
